When a complex piece of software, such as an operating system or virtualization layer supporting a virtual machine, encounters a fault, a file containing the state of the processor and memory at the point of the failure is saved. However, it is not known at the time of the failure whether the failure is caused by hardware or software. To find out the cause of failure requires close examination of the instructions of the processor and the processor states in the saved file. It is especially important to determine whether the failure is due to hardware or software so that the proper resources can be brought to bear to correct the failure. For example, if the crash is not caused by hardware, then the failure must be due to software, and software expertise can be deployed to search for the program error. If the crash is caused by a hardware failure, then such software expertise need not be employed and the manufacturer of the processor must determine how to correct such faults.